AWSホワイトペーパー「Amazon Aurora のご利用開始にあたって」の紹介
「Amazon Aurora のご利用開始にあたって」は2015年4月にAWSが発行したホワイトペーパーです。
ホワイトペーパー概要
Aurora は MySQL 5.6 互換なエンタープライズ級のクラウド向けRDBです。 多くの点で Aurora は RDB 界隈のゲームチェインジャーです。
このホワイトペーパーは以下をカバーします
- Auroraの利点を学ぶ
- Auroraを起動し接続する手順
- Auroraのアーキテクチャ、スケーラビリティ、パフォーマンスについて学ぶ
- 他のDBからの移行手順
なお、2016/06/26 時点では、このホワイトペーパーは英語でのみ提供されています。
目次
ホワイトペーパーの目次は以下の通りです。
- Abstract
- Introduction
- Amazon Aurora: A Primer
- Amazon Aurora Architecture
- Self-Healing, Fault-Tolerant Design
- Automatic, Continuous Backups
- High Performance
- Low-Latency Read Replicas
- Failure Testing
- Multiple Failover Targets
- Survivable Caches
- Security
- Getting Started
- Creating an Amazon Aurora Database
- Connecting to Your Amazon Aurora Databas
- Instance Sizing
- Scalability
- Backup and Restore
- Managing Amazon Aurora
- Monitoring
- Amazon CloudWatch Monitoring
- Enhanced Monitoring
- Migrating to Amazon Aurora
- Amazon RDS MySQL to Amazon Aurora
- MySQL to Amazon Aurora
- Migration with Minimal Downtime
- Conclusion
- Contributors
- Further Reading
Introduction
データベース移行は、オンプレミス環境をただ単にクラウドに移動させるだけの lift and shift 方式からフルマネージドでクラウドネイティブなデータベースサービスへの移行に移りつつあります。
このトレンドの背景は、古典的なデータベースは、スケーラビリティ、信頼性、パフォーマンスなどのクラドの利点を活かすように設計されていないことによります。古典的なDBはオンプレミス環境で動作させることに最適化されており、基本的なアーキテクチャーは過去数十年変わっていません。
Amazon Aurora は SOA と分散システムを活用して、これらの古典的なDBの抱える課題を解決します。
Amazon Aurora: A Primer
- Amazon Aurora は MySQL 5.6 互換で、AWS と同じく SOA 志向のデータベースです。
- ログ・ストレージレイヤーはDB本体から分離され、ハイパフォーマンス、SSDベース、マルチテナント、スケールアウト に最適化されたストレージサービスとなっています
Amazon Auroraの主要機能は以下があります
- 高い永続性
- 耐障害性
- ストレージの自己修復機能
- 自動スケールするストレージ
- 継続バックアップ
- ハイパフォーマンス
- 高速なくラッシュリカバリ
- DBがリスタートしても消えないキャッシュ
- 高い安全性
Amazon Aurora Architecture
Aurora クラスターは以下で構成されます
- プライマリ インスタンス
- リード・ライト操作とクラスターの変更はこのインスタンス経由で行われます
- クラスターはプライマリインスタンスは1個までしか持てません
- クラスターボリューム
- SSD
- 3AZにまたがり、各AZごとにデータは2コピーされる。つまり、各でーたは3 AZ * 2 copy/AZ = 6 copy となる。
- プライマリ/レプリカインスタンスで共有します
- (オプション)レプリカインスタンス
- リード操作だけが可能です
- クラスターはレプリカを最大15個までもてます
- フェイルオーバーの際には、レプリカがプライマリに格上げされます
Self-Healing, Fault-Tolerant Design
Amazon Auroraクラスターは耐障害性を考慮して設計されています。
クラスターボリュームは複数AZにまたがり、AZで2コピーされ、AZ障害が発生しても、データロスは発生せず、僅かなダウンタイムだけでサービス稼働します。
データボリュームは10GBのセグメントに分割され、各セグメントは3 AZで6コピーされ、ディスク障害による blast radius (爆発半径/爆発の影響の到達距離)を隔離しています。
データが2コピー失われても、書き込みを続けられ、データが3コピー失われても、読み込みを続けられます。
クラスターボリュームは自己修復機能があります。
常にデータブロック・ディスク・ノードの障害をチェックされ、障害があった時は自動的に修復・置き換えられます。
Automatic, Continuous Backups
Amazon Aurora はデータを 99.999999999% の耐久性を誇るS3にバックアップします。
バックアップは自動で、差分データを対象に、継続してバックアップされ、データベースパフォーマンスへのインパクトはありません。
point-in-time リカバリーにより、バックアップデータがあるかぎり、5分前より昔の指定された時点のデータに数クリックで復元できます。
自動バックアップデータは35日間保持できます。一方で、手動バックアップデータは、削除されないかぎり、残り続けます。
High Performance
Amazon Auroraは Log-structured ストレージとデータベースエンジンのカスタマイズにより、MySQL に比べて大幅に性能が向上しています。
データベースエンジンはSSDベースの仮想ストレージレイヤーと密に結合し、ストレージへの書き込み数の削減、ロック競合の最小化、などを実現しています。
r3−8xlargeインスタンスでの SysBench では、500,000 SELECTs/second, 100,000 UPDATEs/second を叩き出しています。
クラスターボリュームはデータサイズの小さな多くのセグメントを持ち、各セグメントが redo ログを持ちます。
Log-structured ストレージの恩恵により、ダーティーバッファのフラッシュは不要です。 ログページがストレージに書き込まれ、ログページを元にストレージレイヤーでデータページが生成されます。
I/O 操作は分散システムの技術が使われています。 データ書き込みは4/6 のコピーで成功したら ACK を返します。 ノード間でデータに差異が見つかった場合は、P2P Gossip レプリケーションで修復されます。
障害などによりデータベースが再起動すると、起動時に、イン・メモリのページキャッシュをバッファプールにプリロードして、バッファプールのキャッシュをウオームアップします。
Autoscaling Storage
Auroraのストレージ(クラスターボリューム)はデータサイズのプロビジョンは不要で、データサイズに応じて、自動で増えます。
Auroraはストレージのパフォーマンスを管理し、一貫して、低レイテンシーなI/Oを実現しています。
ホットスポットはデータの保存場所を移動し、ストレージレイヤのパフォーマンスが一貫するようにします。
Low-Latency Read Replicas
Aurora レプリカは複数のAZに最大15個まで持てます
プライマリインスタンスとストレージを共有しているため、レプリカノードへのログのレプリケートなどは不要です。結果として、レプリカラグはミリセカンド秒で一桁台のことも多いです。
Failure Testing
Amazon Auroraは耐障害試験のために、ノード障害などを発生させる Fault Injection クエリーが用意されています。
クエリーはプライマリ・レプリカの両方に投げられます。
Multiple Failover Targets
Amazon Aurora はスタンバイインスタンスなしにフェイルオーバーできます。
フェイルオーバー先は、任意のAZにいるレプリカインスタンスです。
可用性のためには、各AZには少なくとも1レプリカは用意しておくことが推奨されます。
プライマリ・レプリカでストレージを共有しているため、フェイルオーバーが発生しても、データロスは発生せず、ログのリプレイは不要です。
Instant Crash Recovery
クラッシュが発生しても、redo ログのリプレイなしに、DBは利用できます。
ストレージは多くの小さなセグメントに分割されており、各セグメントがredoログを持っているため、redo ログのリプレイや並行して非同期に行えます。
クラッシュが発生しても、多くの場合は60秒以内に復帰します。
Survivable Caches
Amazon Aurora ではバッファキャッシュはDBプロセスの外に追いやられているため、DBが再起動しても、キャッシュはクリアされません。
Security
Amazon Aurora クラスターはVPC内に作成しなければいけません。
セキュリティグループや NACL でアクセス制御できます。
通信の暗号化、保存データの暗号化(encryption at rest)にも対応しています。
Getting Started
管理コンソールから、Amazon Aurora を作成し、インスタンスに接続します。
Aurora 以外の RDS との違いとしては以下があります
- パラメーターグループは DBパラメーターグループ だけでなく DB クラスターパラメーターグループもある
- インスタンスを束ねたクラスタごとに、クラスタエンドポイントが存在し、プライマリインスタンスのエンドポイントとなっている
- ストレージやProvisioned IOPSは指定しない
- 一番小さなインスタンスタイプは db.r3.large
Backup and Restore
Aurora の特徴的なストレージを活かしたバックアップ・リストアが可能です。
- 自動バックアップのデータ保持期間は1日から35日までです。
- Point-int-time recovery に対応し、5分前〜データ保持期間の任意の状態にデータをリストアできます
- 手動のバックアップデータは明示的に削除しないかぎり、残り続けます
- バックアップは自動で、差分データだけ、継続的にS3に保存され、DB システムへの性能面での影響はありません。
Managing Amazon Aurora
- 管理コンソール
- AWS CLI
- AWS SDK
から操作可能です。
Monitoring
CloudWatch と Enhanced Monitoring の2種類の監視方法があります。
CloudWatch
- RDSインスタンスのハイパーバイザー経由で取得
- 20 以上のメトリクス
Enhanced Monitoring
- RDSインスタンス内のエージェント経由で取得
- 50 以上のメトリクス
- オプトイン
- 1秒までの精度に対応
Migrating to Amazon Aurora
運用中のデータベースをAmazon Auroraに移行する手順が紹介されています。
Amazon RDS MySQL から Amazon Aurora
Amazon RDS MySQL で作成されたスナップショットから Aurora インスタンスを起動できます。
スナップショットは手動・自動を問いません。
MySQL から Amazon Aurora
EC2やオンプレミス環境のMySQLをAmazon Auroraに移行するには2通ります。
1. mysqldump
データ量が小さく、サービス停止を受け入れられる場合にこの方式を採用します。 mysqldump コマンド経由でバックアップ・リストアします。
2. MySQLからAuroraにレプリケートさせる
AuroraはMySQL 5.6 互換のため、binary log(binlog)のレプリケーション設定をして、データ同期します。 この方式は mysqldump よりもダウンタイムを減らすことができます。
手順の詳細は、以下のドキュメントを参照ください
- Replication with Amazon Aurora - Amazon Relational Database Service
- Migrating Data to an Amazon Aurora DB Cluster - Amazon Relational Database Service
ダウンタイムを最小限にして移行する
ダウンタイムやサービス停止を最小限にして移行するには AWS Database Migration Service (AWS DMS) を利用します。 DMSはマネージドなデータ移行サービスで、転送データの圧縮、平行転送のような複雑な処理を行います。 DMSのデータ同期設定完了後は、変更されたデータが随時データソースからターゲットにリレーされます。
DMS は Oracle から Oracle のように DB エンジンが同じ homogeneous なデータ移行のみならず、Oracle から Aurora のように異なるDBエンジンへの heterogeneous なデータ移行にも対応します。
heterogeneous なデータ移行を用意にするため、DB間でデータスキーマ変換を行う AWS Schema Conversion Tool (SCT) も提供されています。 このツールはビュー、ストアドプロシージャ、関数なども変換します。
Conclusion
Amazon Auroraはクラウド用途に設計された、高パフォーマンス、高可用性なエンタープライズ級のデータベースです。
フルマネージドサービスで、管理が非常に楽なため、ユーザーはアプリ開発やビジネスに専念できます。
ライセンス費用などは発生せず、利用量に応じた従量課金です。
レプリカは15個まで、インスタンスタイプは 32 vCPU/244 Gibメモリ まで簡単な操作でスケールアウト・スケールアップできます Auroraストレージは 10 GB から 64 TB まで自動的に拡張します。
Further Reading
この章では、参考資料が列挙されています。
- Amazon Aurora Product Details
- Amazon Aurora FAQ
- Amazon Aurora Documentation
- Amazon Aurora Performance Benchmarking Guide
おわりに
AWS 史上、最速でサービス利用者が増えている Amazon Auroraの概要ホワイトペーパーのご紹介でした。
Amazon Aurora の概要を知るには、以下の資料がおすすめです。
- 文章で読みたい場合は、今回紹介したホワイトペーパー
- スライドで読みたい、動画で見たい場合は、AWS Summit Tokyo 2016 の Amazon Aurora Deep Dive ~性能向上の仕組みと最新アップデート~
Aurora を使いこなす上では、古典的な DBMS との違いを知ることが重要です。 Aurora 採用を検討している方、なんとなく Aurora を使ってみた方は、これらの資料に一度目を通すと、Aurora の理解がより深まるのではないかと思います。